Media content (e.g., music, still images, video, and the like) may be digitally encoded in one of many public or proprietary formats and sent as a file and/or streamed to consumers, optionally including the use of digital rights management (“DRM”) technologies to authenticate and authorize use of the content. For example, FIG. 1 illustrates a conceptual overview of various stages a piece of digital media content passes through from being captured by an analog-digital convertor as raw digital media data 135 to being streamed to a client device 105. Many different media distribution systems may be assembled to implement the various conceptual stages illustrated in FIG. 1, including previously-known distribution systems such as system 200, illustrated in FIG. 2 and discussed below.
For certain types of media content (especially time-based media such as video, and to a lesser extent, audio) raw digital media data 135 may have a very high bit-rate and may consequently be difficult to stream across many commonly-used networking technologies. Accordingly, raw digital media data 135 is often encoded 110 into an encoded form 137 according to one or more encoding formats (also known as coder-decoders or “codecs”). For example, video digital media data (or a video portion of multi-media digital media data) is commonly encoded using a lossy compression encoding format such as H.264/MPEG-4 Advanced Video Coding (hereinafter “H.264”), Windows Media Video (“WMV”), VP8, and the like. Similarly, audio digital media data (or an audio portion of multi-media digital media data) is commonly encoded using a lossy compression encoding format such as Advanced Audio Coding (“AAC”), Audio Data Transport Stream (“ADTS”), MPEG-1 Audio Layer 3 (“MP3”), Windows Media Audio (“WMA”), and the like. Lossless encoding formats also exist, but are less commonly used in streaming media contexts. Encoding raw digital media data 135 tends to be a relatively resource-intensive process compared to packaging and packetizing encoded media (as discussed below).
Prior to being distributed, encoded digital media data 137 is commonly packaged 115 or wrapped into a “container” according to a container format. In the digital media context, a container format is a meta-file format whose specification describes how encoded data and metadata are stored (as opposed to how digital media data is encoded). In most cases, the container format specifies the content and/or the arrangement of various aspects of a packaged container file, including the container file header, some or all of the metadata, and/or synchronization information. Simpler container formats (e.g., Audio Interchange File Format or “AIFF,” Waveform Audio File Format or “WAV,” and the like) can contain different types of audio codecs. More advanced container formats can support multiple audio and video streams, subtitles, chapter-information, meta-data, and the like, as well as synchronization information needed to play back the various streams together. Commonly used more-advanced container formats include 3GP (or 3GPP) container format; 3G2 (or 3GPP2) container format; MPEG-4 Part 14 (“MP4”) container format; F4V Flash Video container format; MPEG transport stream (“MPEG-TS”) container format as specified in MPEG-2 Part 1, Systems; Advanced Systems Format (“ASF”), Audio Video Interleave (“AVI”); and the like. Many of these commonly used container formats are based on or otherwise related to the MPEG-4 Part 12 ISO base media file format.
Prior to being distributed to client 105, encoded digital media data 137 packaged 115 in container 140 is commonly packetized 120 according to a delivery protocol. In the streaming digital media context, a “delivery protocol” is typically an Application Layer protocol within the Internet Protocol Suite that is used for streaming packaged, encoded digital media content across a network. Commonly used delivery protocols include Real Time Streaming Protocol (“RTSP”), Real Time Messaging Protocol (“RTMP”), Hypertext Transfer Protocol (“HTTP”) Live Streaming, and Windows Media HTTP Streaming Protocol (“MS-WMSP” or “MMSH”). Furthermore, RTSP is commonly used in combination with the Real Data Transport protocol (“RDT”) or Real-time Transport Protocol (“RTP”). In some cases, a particular delivery protocol is associated with a particular container format (or visa verse). For example, the RTMP delivery protocol is commonly associated with the F4V Flash Video container format. By contrast, RTP supports a number of different container formats, including H.264, MP4, et al.
Delivery protocols often call for packaged, encoded digital media data to be split into fragments (referred to herein as “media packets” 145) for delivery to a client. For example, according to the RTMP delivery protocol, the default size for a media packet is 128 bytes for video data and 64 bytes for audio data. Similarly, the HTTP Live Streaming protocol specifies that a distribution server must divide the stream into individual media files whose duration is approximately equal.
The process of splitting packaged, encoded digital media into media packets is referred to herein as “packetizing” or “packetization.” The inverse process (i.e., joining media packets back into packaged, encoded digital media data) is similarly referred to as “de-packetizing.” The packetization process for streaming delivery often proceeds according to specifications set out in one or both of the acting delivery protocol and the pertinent container format. For example, as the MPEG-TS container format is designed in part for transmission of encoded digital media data, the MPEG-TS container format is specified to encapsulate packetized elementary streams (“PES”) comprising media packets consisting of a number of header fields and 188 bytes of encoded digital media payload. When streaming an MPEG-TS container, for example, a distribution server may use the MPEG-TS-specified media packets when dividing the stream into individual media files whose duration is approximately equal, as specified by the HTTP Live Streaming protocol.
Finally, the packetized, packaged, encoded digital media 145 can be delivered 125 to a client device 105, which would typically de-packetize the media packets 145 and read the encoded digital media data out of the re-constructed container. The delivery would typically involve sending the media packets 145 according to one or more Transport Layer, Internet Layer, and/or Link Layer protocols, all of which are managed by standard networking components.